草庐IT

Java Quartz 作业持久化

全部标签

ruby-on-rails - 查看 resque 作业是否仍在运行,如果卡住则将其杀死

我有一个应用程序使用resque来运行一些长时间运行的作业。有时需要8小时或更长时间才能完成。在作业失败的情况下,有没有办法监控resque本身,看看作业是否在运行?我知道我可以在数据库表(或redis本身)中更新作业的状态,但我想知道作业是否仍在运行,以便在必要时将其终止。我需要做的具体事情是:判断作业是否还在运行判断作业是否停止杀死卡住的作业 最佳答案 请求githubrepository有这个secretgem,god将执行此操作的任务:观察您的任务并杀死陈旧的任务。https://github.com/resque/resq

ruby-on-rails - Rails ActiveJob - 如何阻止作业在 before_enqueue 中排队

我正在运行Rails4.2.8,我想让我的工作只在特定条件下运行。目前我正在检查调用作业的代码,但将逻辑包含在作业类中会更清晰。有人这样做过吗?classMyJob我正在使用Sidekiq4.2.10作为后台作业适配器。 最佳答案 您可以使用around_enqueue在不引发异常的情况下获得相同的结果。当您的工作需要不排队时,这会很有用。例如:around_enqueuedo|_job,block|ifmy_conditionblock.call#thiswillenqueueyourjobendendOBS:值得注意的是,此答​

ruby-on-rails - Rails ActiveJob - 如何阻止作业在 before_enqueue 中排队

我正在运行Rails4.2.8,我想让我的工作只在特定条件下运行。目前我正在检查调用作业的代码,但将逻辑包含在作业类中会更清晰。有人这样做过吗?classMyJob我正在使用Sidekiq4.2.10作为后台作业适配器。 最佳答案 您可以使用around_enqueue在不引发异常的情况下获得相同的结果。当您的工作需要不排队时,这会很有用。例如:around_enqueuedo|_job,block|ifmy_conditionblock.call#thiswillenqueueyourjobendendOBS:值得注意的是,此答​

ruby-on-rails - 在使用 Resque-scheduler 和 redis 时提到的延迟时间过去后,延迟作业未进入主作业队列

我需要执行一项工作,其中每次创建订单时都会将其分配给供应商,如果供应商不接受订单并在指定时间内更新状态,订单将被自动拒绝并更新状态拒绝。我面临的问题是作业进入延迟队列,如resquewebView所示,但在指定的延迟时间后没有移动到主队列这是我的工作。classAutoRejectionJob在我的分配模型中:classEstamps::Assignment在这里,一旦创建了分配记录,其状态通常在创建时保持为“已分配”。现在从创建之时起,如果用户没有在指定时间内更新状态,则作业必须自动将状态更新为“已拒绝”。我也试过这个方法。defenqueue_check_statusResque.

ruby-on-rails - 在使用 Resque-scheduler 和 redis 时提到的延迟时间过去后,延迟作业未进入主作业队列

我需要执行一项工作,其中每次创建订单时都会将其分配给供应商,如果供应商不接受订单并在指定时间内更新状态,订单将被自动拒绝并更新状态拒绝。我面临的问题是作业进入延迟队列,如resquewebView所示,但在指定的延迟时间后没有移动到主队列这是我的工作。classAutoRejectionJob在我的分配模型中:classEstamps::Assignment在这里,一旦创建了分配记录,其状态通常在创建时保持为“已分配”。现在从创建之时起,如果用户没有在指定时间内更新状态,则作业必须自动将状态更新为“已拒绝”。我也试过这个方法。defenqueue_check_statusResque.

python - 从失败的 rq 作业中获取异常消息

我正在使用rq和q.enqueue_call(...)运行一个作业,在这个作业中我用raiseException('URLnotfound')引发异常我想知道在作业失败后如何从该作业中获取异常消息(“找不到URL”)。我可以获取堆栈跟踪print(get_failed_queue(connection=conn).jobs[-1].exc_info)虽然自己似乎无法获取简短的错误消息。我认为job.result(在使用job=Job.fetch(job_key,connection=conn)获得工作后)会起作用,尽管它返回None 最佳答案

python - 从失败的 rq 作业中获取异常消息

我正在使用rq和q.enqueue_call(...)运行一个作业,在这个作业中我用raiseException('URLnotfound')引发异常我想知道在作业失败后如何从该作业中获取异常消息(“找不到URL”)。我可以获取堆栈跟踪print(get_failed_queue(connection=conn).jobs[-1].exc_info)虽然自己似乎无法获取简短的错误消息。我认为job.result(在使用job=Job.fetch(job_key,connection=conn)获得工作后)会起作用,尽管它返回None 最佳答案

redis - 写爬虫时如何保持访问过的url和维护作业队列

我正在写一个爬虫。我将访问过的url保存在redis集中,并使用redis列表维护作业队列。随着数据的增长,内存用完了,我的内存是4G。没有redis怎么维护这些?我不知道,如果我将这些存储在文件中,它们也需要在内存中。如果我用mysql来存储,我想它可能比redis慢很多。我有5台4G内存的机器,谁有搭建redis集群的资料,也有很大帮助。我有一些资料可以设置一个集群进行故障转移,但我需要的是设置一个负载平衡的集群。谢谢 最佳答案 如果您只是在执行从集合和列表中添加/删除的基本操作,请查看twemproxy/nutcracker.

redis - 写爬虫时如何保持访问过的url和维护作业队列

我正在写一个爬虫。我将访问过的url保存在redis集中,并使用redis列表维护作业队列。随着数据的增长,内存用完了,我的内存是4G。没有redis怎么维护这些?我不知道,如果我将这些存储在文件中,它们也需要在内存中。如果我用mysql来存储,我想它可能比redis慢很多。我有5台4G内存的机器,谁有搭建redis集群的资料,也有很大帮助。我有一些资料可以设置一个集群进行故障转移,但我需要的是设置一个负载平衡的集群。谢谢 最佳答案 如果您只是在执行从集合和列表中添加/删除的基本操作,请查看twemproxy/nutcracker.

python - 在 redis 作业上存储 "meta"数据不起作用?

我正在尝试测试排队的Redis作业,但meta数据似乎没有在任务和发起者之间传递。job_id似乎匹配,所以我很困惑。也许一些新鲜的眼光可以帮助我解决问题:任务是asperthedocumentation:fromrqimportget_current_jobdefdo_test(word):job=get_current_job()printjob.get_id()job.meta['word']=wordjob.save()print"saved:",job.meta['word']returnTruerqworker日志保存后打印job_id和word14:32:32***Lis